#include <iostream>
#include <string>

/*
需要编写拷贝构造函数的原因
    使用 编译器提供的 
        拷贝构造函数 以及 赋值运算符    会将指针指向的空间也赋值过去

深拷贝  自己写
浅拷贝  使用 编译器提供的 

*/
using namespace std;


class stu
{
private:
    int val;
    
public:

    int * ptr;

public:
    stu() :val(10)
    {

    }
    stu(int val) : val(val)
    {

    }

public:
    void show()
    {
        cout << val << endl;
        cout << *ptr << endl;
    }
};



int main(int argc, char const *argv[])
{
    stu s1(10);
    s1.ptr = new int(80);

    // 默认赋值运算符重载
    stu s2 = s1;
    *s1.ptr = 90;
    s2.show();

    
    // 默认拷贝构造函数
    stu s3(s1);
    s3.show();
    
    
    return 0;
}
